package com.generator.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;

/**
 * @author dong
 * @Description: 序列化工具类
 * @date 2017年10月9日 下午3:57:00
 */
public class SerializableUtil<T> {
    private static final Logger logger = LoggerFactory.getLogger(SerializableUtil.class);

    /**
     * @param pathname 文件全路径
     * @param t        序列化对象
     * @return
     * @Description: 序列化
     * @author dong
     * @date 2017年10月9日 下午4:05:28
     */
    public static <T> boolean Serializer(String pathname, T t) {
        try {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(pathname));
            out.writeObject(t);
            out.flush();
            out.close();
        } catch (FileNotFoundException e) {
            logger.error("序列化失败,{}文件不存在", pathname);
            return false;
        } catch (Exception e) {
            logger.error("序列化失败", e);
            return false;
        }
        return true;
    }

    /**
     * @param pathname 文件全路径
     * @param t        反序列化对象
     * @return
     * @Description: 反序列化
     * @author dong
     * @date 2017年10月9日 下午4:05:47
     */
    public static Object Deserialize(String pathname) {
        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(pathname));
            Object obj = in.readObject();
            in.close();
            return obj;
        } catch (ClassNotFoundException e) {
            logger.error("反序列化失败,无法找到类", e);
        } catch (FileNotFoundException e) {
            logger.error("反序列化失败,{}文件不存在", pathname);
        } catch (IOException e) {
            // logger.error("反序列化失败", e);
        }
        return null;
    }
}
